package com.sihan.framework.etm.service.business;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.framework.model.PageResult;
import com.framework.mybatis.service.BaseService;
import com.sihan.framework.etm.dto.AtlasAnswerDTO;
import com.sihan.framework.etm.dto.TicketLIstDTO;
import com.sihan.framework.etm.dto.baseData.DevicePostionDTO;
import com.sihan.framework.etm.dto.baseData.ToolDTO;
import com.sihan.framework.etm.dto.business.AtlasPositionDTO;
import com.sihan.framework.etm.dto.business.ToolPositonDTO;
import com.sihan.framework.etm.dto.business.WarehouseQueryReqDTO;
import com.sihan.framework.etm.entity.business.ToolMoveCoordinateModel;
import com.sihan.framework.etm.entity.business.ToolPosition;
import com.sihan.framework.etm.vo.ToolIocationMode;
import com.sihan.framework.etm.vo.baseData.DeviceBindRecordVO;
import com.sihan.framework.etm.vo.baseData.DevicePositionVO;
import com.sihan.framework.etm.vo.business.*;
import org.json.simple.JSONObject;

public interface ToolPositionService extends BaseService<ToolPosition, String> {

    /**
     * @param id
     * @return
     * @return ToolPositionDetailVO
     * @description 单个工具器当前定位信息
     * @auther 韩兵
     * @Date 2020年7月8日
     */
    ToolPositionDetailVO selectToolCoordinateInfoById(String id);

    /**
     * @param dto
     * @return
     * @return PageResult<ToolPositionDetailVO>
     * @description 分页查询工器具定位信息
     * @auther 韩兵
     * @Date 2020年7月8日
     */
    PageResult<ToolPositionDetailVO> selectPage(ToolPositonDTO dto);

    /**
     * @param dto
     * @return
     * @return List<ToolPositionDetailVO>
     * @description 地图显示的工器具坐标
     * @auther 韩兵
     * @Date 2020年7月8日
     */
    Map<String, ToolPositionMapVO> selectToolCoordinateForMap(ToolPositonDTO dto);

    /**
     * @param dto
     * @return
     * @return List<ToolPositionMapVO>
     * @description 数组形式返回
     * @auther 韩兵
     * @Date 2020年7月31日
     */
    List<DevicePositionVO> selectArrayToolCoordinateForMap(DevicePostionDTO dto);


    List<AtlasAnswerDTO> selectArrayToolMap(AtlasPositionDTO dto);

    List<AtlasAnswerDTO> selectArrayToolCoordinateForMap(AtlasPositionDTO dto);

    List<LocalizerVO> wxMap(String query);

    List<WXCoordinateVO> getWXCoordinateList(ToolDTO dto);

    /**
     * @param dto
     * @return
     * @return PageResult<ToolWarehouseRecordVO>
     * @description 出入库记录查询
     * @auther 韩兵
     * @Date 2020年7月8日
     */
    PageResult<ToolWarehouseRecordVO> selectWarehouseRecord(WarehouseQueryReqDTO dto);

    /**
     * @param dto
     * @return
     * @return List<String>
     * @description 查询工器具运行轨迹
     * @auther 韩兵
     * @Date 2020年7月9日
     */
    List<ToolTrajectoryVO> selectToolCoorHistory(ToolDTO dto);


    Map trackSign(ToolDTO dto);

    void addPositionRecord(JSONObject jsonObject,Date date);


    List<ToolMoveCoordinateModel> lngLatToCoordinate(ToolDTO dto);

    List<List<Object>> lngLatToCoordinateArray(ToolDTO dto);

    PageResult<DeviceBindRecordVO> selectDeviceBindRecord(DevicePostionDTO dto);
}
